#include <iostream>

// 单例模式-饿汉-以空间换时间
//  class singleton{
//  private:
//  static singleton _eton;
//  singleton():_data(123)
//  {
//  std::cout<<"这是单例模式"<<std::endl;
// }
// singleton(const singleton&)=delete;
// singleton &operator=(const singleton &) = delete;
// ~singleton(){}
// public:
// static singleton& GetInstance()
// {
// return _eton;
// }
// int getdata()
// {
// return _data;
// }
// private:
// int _data;
// };
//
// singleton singleton::_eton;

// 单例模式-懒汉模式

class singleton
{
private:
    singleton() : _data(123)
    {
        std::cout << "这是单例模式" << std::endl;
    }
    singleton(const singleton &) = delete;
    singleton &operator=(const singleton &) = delete;
    ~singleton() {}

public:
    static singleton &GetInstance()
    {
        static singleton eton;
        return eton;
    }
    int getdata()
    {
        return _data;
    }

private:
    int _data;
};

int main()
{
    std::cout<<singleton::GetInstance().getdata();
    return 0;
}
